package org.igeek.config.initAndDestroy;

import org.springframework.beans.factory.DisposableBean;
import org.springframework.beans.factory.InitializingBean;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;

import javax.annotation.PostConstruct;
import javax.annotation.PreDestroy;

/**
 * @package org.igeek.config.initAndDestroy
 * @Description
 * @Author LittlePunk [296526219@qq.ccom]
 * @Version 2022.1
 * @Date 2023/11/14 16:25
 *
 *
 * 指定初始化和销毁的方法
 * 第一种方法:
 *  Bean实现implements InitializingBean , DisposableBean接口
 *  重写afterPropertiesSet()  destroy()方法
 *
 * 第二种方法:
 *  Bean方法上指定注解@PostConstruct 初始化、@PreDestroy  销毁
 *
 *第三种方法:
 *
 */
//@Component
public class Cat /*implements InitializingBean , DisposableBean */{
    //@Value("加菲猫")
    private String name;

/*   第一种
  //初始化方法
    @Override
    public void afterPropertiesSet() throws Exception {
        System.out.println("afterPropertiesSet 初始化");
    }

    //销毁方法
    @Override
    public void destroy() throws Exception {
        System.out.println("destroy 销毁");
    }*/

/*   第二种
 //初始化方法
    @PostConstruct
    public void init(){
        System.out.println("init ...");
    }
    //销毁方法
    @PreDestroy
    public void destroy(){
        System.out.println("destroy ...");
    }
    */


    public void initMeth(){
        System.out.println("init ...");
    }
    //销毁方法
    @PreDestroy
    public void destroyMeth(){
        System.out.println("destroy ...");
    }
    public Cat() {
        System.out.println("无参构造");
    }

    public Cat(String name) {
        this.name = name;
        System.out.println("有参构造");
    }

    /**
     * 获取
     * @return name
     */
    public String getName() {
        return name;
    }

    /**
     * 设置
     * @param name
     */
    public void setName(String name) {
        this.name = name;
    }

    public String toString() {
        return "Cat{name = " + name + "}";
    }


}
